# Name: Tover Makefile
# Author: Ingmarrr

CC =avr-gcc
CCC=avr-g++
CXX=avr-g++

DEVICE     = atmega16
CLOCK      = 8000000
PROGRAMMER = -c stk500v2 -P /dev/ttyUSB0 

# Uit welke file's bestaat het programma.
# Laat make dat zelf uitzoeken op basis van de filenamen
HEADERS		:= $(wildcard *.h)
SOURCE.c	:= $(wildcard *.c)
SOURCE.cc	:= $(wildcard *.cc)
SOURCE.cpp	:= $(wildcard *.cpp)

# --------------------------------------
# Hieronder hoef je zelden iets aan te passen
# --------------------------------------

# make bedenkt zo zelf de namen van de .o files
OBJECTS	= $(SOURCE.c:.c=.o) $(SOURCE.cc:.cc=.o) $(SOURCE.cpp:.cpp=.o)

# maak een lijst van alle sources
SOURCES	= $(SOURCE.c) $(SOURCE.cc) $(SOURCE.cpp)

# Laat de compiler ook de extra .h files vinden
CFLAGS +=-I$(INCDIR)
# en zet de warnings aan
CFLAGS += -Wall
# En, optioneel, extra debugging informatie
CFLAGS += -g
#
CFLAGS += -Os

CFLAGS += -mmcu=$(DEVICE)
# NB de -g optie zorgt voor extra informatie
# voor de gdb / ddd debuggers.

COMPILE = $(CC) $(CFLAGS)

AVRDUDE = avrdude $(PROGRAMMER) -p $(DEVICE) -F

# ---------------------------
# Regels zodat make weet hoe je van .cc of .cpp naar .o komt
.SUFFIXES	: .o .cc .cpp

.cc.o	:
	$(COMPILE.cc) $<
.cpp.o	:
	$(COMPILE.cc) $<
.c.o:
	$(COMPILE) -c $< -o $@
.S.o:
	$(COMPILE) -x assembler-with-cpp -c $< -o $@
.c.s:
	$(COMPILE) -S $< -o $@

# ---------------------------


# Het hoofdoel is programma 'all'
all:	main.hex

# file targets:
main.elf: $(OBJECTS)
	$(COMPILE) -o $@ $(OBJECTS)

main.hex: main.elf
	rm -f main.hex
	avr-objcopy -j .text -j .data -O ihex main.elf main.hex

# Bepaal de onderlinge afhankelijkheden van de files.
_deps	: $(HEADERS) $(SOURCES)
	$(CC) -MM $(CFLAGS) $(SOURCES) > _deps
include _deps

# einde van compilen
	
flash:	all
	$(AVRDUDE) -U flash:w:main.hex:i

# En om opruiming te houden.
clean	:
	-rm -f main *.o _deps main.hex  main.elf
